沒錯今天又是金流payment的額外擴充,
要講的是log紀錄,一樣先上結構
Schema::create('payment', function (Blueprint $table) {
$table->string('id', 30)->comment('同訂單id');
$table->string('payment_id', 30)->comment('金流單id');
$table->string('type', 20)->comment('付款類型'); //credit, atm
$table->string('status', 30)->default('unpaid')->comment('金流狀態');
$table->dateTime('expired_at')->nullable()->comment('付款截止時間');
$table->dateTime('paid_at')->nullable()->comment('付款時間');
$table->text('info')->nullable(); // 付款資訊物件(ATM帳號/超商代碼/超商條碼)
$table->float('amount')->default(0); // 金額
$table->float('fee')->default(0); // 手續費
$table->primary(['id']);
});
//新增金流log table
Schema::create('payment_log', function (Blueprint $table) {
$table->string('id', 30);
$table->string('order_id', 30);
$table->string('payment_id', 100)->nullable()->comment('金流單id');
$table->string('service_order_id', 100)->nullable()->comment('第三方金流單id');
$table->string('status', 30)->comment('金流狀態');
$table->text('response')->nullable()->comment('金流方回傳內容');
$table->timestamps();
$table->primary(['id']);
$table->index(['payment_id']);
});
這邊我們新增了table payment_log,因為金流的溝通可能會有很多次來往,
因此需要紀錄下每次接收到的資訊,不管在查詢還是bebug都很方便,
這邊注意一下除了本來的payment_id之外,還有特別紀錄order_id,
主要是因為payment_id為了要符合重複付款的部份可能會換,
所以要有order_id方便我們filter出該筆訂單的全部金流紀錄,
其他的status、response就是該資料對應的狀態以及回傳內容,
至於第三方金流單號(永豐金是TSNo)service_order_id算是比較非必要,
屬於個人喜好的欄位,各位也可自行新增刪除覺得有需要或者沒必要的欄位。
有了金流、金流紀錄我們訂單交易的部份快到尾聲了,
剩下還有一些狀態卡點補充,以及最後的常用案例,
good bye.